let path = require('path')
let HtmlWebpackPlugin = require('html-webpack-plugin')
let webpack = require('webpack')
// let Happypack = require('happypack')

module.exports = {
    // optimization:{
    //     splitChunks:{//分割代码块
    //         cacheGroups:{
    //             common:{
    //                 chunks:'initial',
    //                 minSize:0,
    //                 minChunKs:1

    //             }

    //         }
    //     }
    // },
    optimization:{
        splitChunks:{
            cacheGroups:{
                common:{
                    chunks:'initial',
                    minSize:0,
                    minChunks:2,
                }
            }

        }
    },
    mode:'development',
    // entry:'./src/index.js',
    entry:{
        index:'./src/index.js',
        other:'./src/other.js'
    },
    devServer:{
        port:3000,
        open:true,
        contentBase:'./dist'
    },
    // sourceMap: 'source-map',
    module:{
        noParse:/jquery/,
        rules:[
            {
            test:/\.css$/,
            use:['style-loader','css-loader']
            // use:'Happypack/loader?id=css'
            },
            {
                test:/\.js$/,
                exclude:/node_modules/,
                include:path.resolve('src'),
                // 优化项  排除依赖，只打包src的js
                // use:'Happypack/loader?id=js'
                use:{
                    loader:'babel-loader',
                    options:{
                        presets:[
                            '@babel/preset-env',
                            '@babel/preset-react'
                        ]
                    }
                }
                
            }
        ]
    },
    output:{
        filename:'[name].js',
        path:path.resolve(__dirname,'dist')
    },
    plugins:[
        // new Happypack({
        //     id:'css',
        //     use:['style-loader','css-loader']
        // }),
        // new Happypack({
        //     id:'js',
        //     use:[{
        //         loader:'babel-loader',
        //         options:{
        //             presets:[
        //                 '@babel/preset-env',
        //                 '@babel/preset-react'
        //             ]
        //         }
        //     }]
        // }),
        // new webpack.DllReferencePlugin({
        //     manifest:path.resolve(__dirname,'dist','manifest.json')

        // }),
        new webpack.IgnorePlugin(/\.\/locale/,/moment/),
        new HtmlWebpackPlugin({
            template:'./pubilc/index.html'
        })
    ]
}